package player;

import powers.Power;
import powers.PowerSource;
import Items.ArmorType;
import Items.ImplementTypes;
import Items.WeaponCategory;
import Items.Weapons;

public class PlayerClasses
{
	static private ArmorType[] clericArmor = { ArmorType.Cloth,
			ArmorType.Leather, ArmorType.Hide, ArmorType.Chainmail };
	static private WeaponCategory[] clericWepCat = { WeaponCategory.Simple };
	static private ImplementTypes[] clericImp = { ImplementTypes.holySymbol };
	static private int[] clericDef = { 0, 0, 2, 0 };
	static private ClassFeat[] clericFeats = { ClassFeat.ChannelDivinityCleric,
			ClassFeat.HealersLore, ClassFeat.HealingWord,
			ClassFeat.RitualCasting };
	final static public PlayerClass cleric = new PlayerClass("Cleric",
			PowerSource.Divine, clericArmor, new Weapons[0], clericWepCat,
			clericImp, clericDef, 12, 5, 7, clericFeats, new Power[0]);

	static private ArmorType[] fighterArmor = { ArmorType.Cloth,
			ArmorType.Leather, ArmorType.Hide, ArmorType.Chainmail,
			ArmorType.Scale, ArmorType.LightShield, ArmorType.HeavyShield, };
	static private WeaponCategory[] fighterWepCat = { WeaponCategory.Simple,
			WeaponCategory.MilitaryMelee, WeaponCategory.MilitaryRanged };
	static private int[] fighterDef = { 0, 2, 0, 0 };
	static private ClassFeat[] fighterFeats = { ClassFeat.CombatChallenge,
			ClassFeat.Combatsuperiority, ClassFeat.FighterWeapontalent };
	final static public PlayerClass fighter = new PlayerClass("Fighter",
			PowerSource.Martial, fighterArmor, new Weapons[0], fighterWepCat,
			new ImplementTypes[0], fighterDef, 15, 6, 9, fighterFeats,
			new Power[0]);

	static private ArmorType[] paladinArmor = { ArmorType.Cloth,
			ArmorType.Leather, ArmorType.Hide, ArmorType.Chainmail,
			ArmorType.Scale, ArmorType.Scale, ArmorType.LightShield,
			ArmorType.HeavyShield };
	static private WeaponCategory[] paladinWepCat = { WeaponCategory.Simple,
			WeaponCategory.MilitaryMelee };
	static private ImplementTypes[] paladinImp = { ImplementTypes.holySymbol };
	static private int[] paladinDef = { 0, 1, 1, 1 };
	static private ClassFeat[] paladinFeats = {
			ClassFeat.ChannelDivinityPaladin, ClassFeat.DivineChallange,
			ClassFeat.LayOnHands };
	final static public PlayerClass paladin = new PlayerClass("Paladin",
			PowerSource.Divine, paladinArmor, new Weapons[0], paladinWepCat,
			paladinImp, paladinDef, 15, 6, 10, paladinFeats, new Power[0]);

	static private ArmorType[] rangerArmor = { ArmorType.Cloth,
			ArmorType.Leather, ArmorType.Hide };
	static private WeaponCategory[] rangerWepCat = { WeaponCategory.Simple,
			WeaponCategory.MilitaryMelee, WeaponCategory.MilitaryRanged };
	static private int[] rangerDef = { 0, 1, 1, 0 };
	static private ClassFeat[] rangerFeats = { ClassFeat.FightingStyle,
			ClassFeat.HuntersQuarry, ClassFeat.PrimeShotRanger };
	final static public PlayerClass ranger = new PlayerClass("Ranger",
			PowerSource.Martial, rangerArmor, new Weapons[0], rangerWepCat,
			new ImplementTypes[0], rangerDef, 12, 5, 6, rangerFeats,
			new Power[0]);

	static private ArmorType[] rogueArmor = { ArmorType.Cloth,
			ArmorType.Leather };
	static private Weapons[] rogueWeapons = { Weapons.Dagger,
			Weapons.HandCrossbow, Weapons.Shuriken, Weapons.Sling,
			Weapons.ShortSword };
	static private int[] rogueDef = { 0, 0, 2, 0 };
	static private ClassFeat[] rogueFeats = { ClassFeat.FirstStrike,
			ClassFeat.RogueTactics, ClassFeat.RogueWeaponTalent,
			ClassFeat.SneakAttack };
	final static public PlayerClass rogue = new PlayerClass("Rogue",
			PowerSource.Martial, rogueArmor, rogueWeapons,
			new WeaponCategory[0], new ImplementTypes[0], rogueDef, 12, 5, 6,
			rogueFeats, new Power[0]);

	static private ArmorType[] warlockArmor = { ArmorType.Cloth,
			ArmorType.Leather };
	static private ImplementTypes[] warlockImp = { ImplementTypes.Rod,
			ImplementTypes.Wand };
	static private int[] warlockDef = { 0, 0, 1, 1 };
	static private ClassFeat[] warlockFeats = { ClassFeat.EldrictBlast,
			ClassFeat.EldrictPact, ClassFeat.PrimeShotWarlock,
			ClassFeat.ShadowWalk, ClassFeat.WarlocksCurse };
	final static public PlayerClass warlock = new PlayerClass("Warlock",
			PowerSource.Arcane, warlockArmor, new Weapons[0],
			new WeaponCategory[0], warlockImp, warlockDef, 12, 5, 6,
			warlockFeats, new Power[0]);

	static private ArmorType[] warlordArmor = { ArmorType.Cloth,
			ArmorType.Leather, ArmorType.Hide, ArmorType.Chainmail };
	static private WeaponCategory[] warlordWepCat = { WeaponCategory.Simple,
			WeaponCategory.MilitaryMelee };
	static private ImplementTypes[] warlordImp = { ImplementTypes.holySymbol };
	static private int[] warlordDef = { 0, 1, 0, 1 };
	static private ClassFeat[] warlordFeats = { ClassFeat.CombatLeader,
			ClassFeat.CommandingPrecense, ClassFeat.InspiringWord };
	final static public PlayerClass warlord = new PlayerClass("Warlord",
			PowerSource.Martial, warlordArmor, new Weapons[0], warlordWepCat,
			warlordImp, warlordDef, 12, 5, 7, warlordFeats, new Power[0]);

	static private ArmorType[] wizardArmor = { ArmorType.Cloth,
			ArmorType.Leather };
	static private Weapons[] wizardWeapons = { Weapons.Dagger,
			Weapons.Quarterstaff };
	static private ImplementTypes[] wizardImp = { ImplementTypes.Orb,
			ImplementTypes.Staff, ImplementTypes.Wand };
	static private int[] wizardDef = { 0, 0, 0, 2 };
	static private ClassFeat[] wizardFeats = { ClassFeat.ArcaneImpMastery,
			ClassFeat.Cantrips, ClassFeat.RitualCasting, ClassFeat.SpellBook };
	final static public PlayerClass wizard = new PlayerClass("wizard",
			PowerSource.Arcane, wizardArmor, wizardWeapons,
			new WeaponCategory[0], wizardImp, wizardDef, 10, 4, 6, wizardFeats,
			new Power[0]);

}
